#include <iostream>
#include <jsoncpp/json/json.h>
#include <string>

using namespace std;

int main()
{
    Json::Value part; // 被嵌套的JSON
    part["desc1"] = "haha";
    part["desc2"] = "hehe";

    Json::Value root; // JSON里面也能够嵌套JSON
    root["x"] = 100;
    root["y"] = 200;
    root["op"] = '+';
    root["desc"] = "this is a + oper";
    root["part"] = part;

    // 如下的FastWrite和StyleWrite是两种不同风格的JSON
    Json::FastWriter w;
    // Json::StyledWriter w;
    string res = w.write(root); // 序列化，参数就是我们的root

    cout << res << endl;

    Json::Value v;
    Json::Reader r; // r就是一个方法,利用r里面的方法将res字符串给v,就完成了反序列化
    r.parse(res, v);

    int x = v["x"].asInt();
    int y = v["y"].asInt();
    int op = v["op"].asInt();
    string desc = v["desc"].asString();

    return 0;
}